package com.ruoyi.system.mapper;

import java.util.Date;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.ruoyi.system.domain.EvCharging;
import com.ruoyi.system.domain.vo.EvChargingStatsVo;

/**
 * 电动车充电记录Mapper接口
 * 
 * @author camelminger
 * @date 2025-11-01
 */
public interface EvChargingMapper 
{
    /**
     * 查询电动车充电记录
     * 
     * @param chargeId 电动车充电记录主键
     * @return 电动车充电记录
     */
    public EvCharging selectEvChargingByChargeId(Long chargeId);

    /**
     * 查询电动车充电记录列表
     * 
     * @param evCharging 电动车充电记录
     * @return 电动车充电记录集合
     */
    public List<EvCharging> selectEvChargingList(EvCharging evCharging);

    /**
     * 新增电动车充电记录
     * 
     * @param evCharging 电动车充电记录
     * @return 结果
     */
    public int insertEvCharging(EvCharging evCharging);

    /**
     * 修改电动车充电记录
     * 
     * @param evCharging 电动车充电记录
     * @return 结果
     */
    public int updateEvCharging(EvCharging evCharging);

    /**
     * 删除电动车充电记录
     * 
     * @param chargeId 电动车充电记录主键
     * @return 结果
     */
    public int deleteEvChargingByChargeId(Long chargeId);

    /**
     * 批量删除电动车充电记录
     * 
     * @param chargeIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteEvChargingByChargeIds(Long[] chargeIds);

    /**
     * 统计充电记录（按时间聚合）
     *
     * @param beginTime 开始时间
     * @param endTime 结束时间
     * @param granularity 粒度
     * @return 聚合集合
     */
    public List<EvChargingStatsVo> selectChargingStatistics(@Param("beginTime") Date beginTime,
                                                           @Param("endTime") Date endTime,
                                                           @Param("granularity") String granularity);
}
